package com.wondersgroup.fjzlpt.org.service.inter.jtqy;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.quick.framework.boot.remoteResult.ResultObject;
import springfox.documentation.spring.web.json.Json;

public interface JtqyService {

	/**
	 * 查询新增签约初始化数据
	 */
	public JSONObject queryManagerInitData(Map<String,String> map);

	/**
     * 查询签约信息分页对象
     * @param map
     * @return
     */
	public JSONObject queryPage(Map<String,String> map);
	
	/**
	 * 保存签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject save(Map<String,String> map);
	
	/**
	 * 保存签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject delete(Map<String,String> map);
	
	/**
	 * 保存签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject isExist(Map<String,String> map);
	
	/**
	 * 新增签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject addQy(Map<String,String> map);
	
	/**
	 * 根据用户id查询该用户下的所有团队长信息
	 * @param map
	 * @return
	 */
	public JSONArray findTdByUserId(Map<String,String> map);
	
	/**
	 * 续约签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject xyfw(Map<String,String> map);
	
	/**
	 * 续约签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject plxyfw(Map<String,String> map);
	
	/**
	 * 解约服务
	 * @param map
	 * @return
	 */
	public JSONObject jyfw(Map<String,String> map);
	
	/**
	 * 变更服务包
	 * @param map
	 * @return
	 */
	public JSONObject bgfwb(Map<String,String> map);
	
	/**
	 * 变更服务包
	 * @param map
	 * @return
	 */
	public JSONObject jtcyQyxxQuery(Map<String,String> map);
	
	/**
	 * 初始化签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject initQyxxData(Map<String,String> map);
	
	/**
	 * 初始化签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject findQyxxById(Map<String,String> map);
	
	/**
	 * 初始化签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject initXyinfomaion(Map<String,String> map);
	
	/**
	 * 初始化签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject cygxQuery(Map<String,String> map);
	
	/**
	 * 查询导出数据列表
	 * @param map
	 * @return
	 */
	public JSONArray queryExportList(Map<String, String> map);
	
	/**
	 * 查询正常可用的团队
	 * @param map
	 * @return
	 */
	public JSONObject queryNormalTdxx(Map<String,String> map);
	
	/**
	 * 保存转介信息
	 * @param map
	 * @return
	 */
	public JSONObject saveZjxx(Map<String,String> map);
	
	
	/**
	 * 分页查询待审核的转介申请
	 * @param map
	 * @return
	 */
	public JSONObject queryZjsqByPage(Map<String,String> map);
	
	/**
	 * 批量审核转介申请
	 * @param map
	 * @return
	 */
	public JSONObject checkZjsq(Map<String,String> map);
	
	/**
	 * 查询数据列表
	 * @param map
	 * @return
	 */
	public JSONArray queryTdxxAll(Map<String, String> map);
	
	/**
	 * 查询数据列表
	 * @param map
	 * @return
	 */
	public JSONObject findLsjlAll(Map<String, String> map);
	
	/**
	 * 查询一个居民的所有历史签约信息
	 * @param map
	 * @return
	 */
	public JSONObject querySingleUserQyxxAll(Map<String, String> map);
	
	/**
	 * 分页查询一个居民历史签约信息到健康城市系统
	 * @param map
	 * @return
	 */
	public JSONObject queryQyHistoryByPageToJkcs(Map<String, String> map);
	
	/**
	 * 导出转介审核数据
	 * @param map
	 * @response
	 */
	public void downloadZjsh(Map<String, String> map, HttpServletRequest request, HttpServletResponse response);
	
	
	/**
	 * 导出签约查询数据
	 * @param map
	 * @response
	 */
	public void downloadQycx(Map<String, String> map,HttpServletRequest request,HttpServletResponse response);
	
	/**
	 * 打印协议
	 * @param map
	 * @param response
	 */
//	public void printXy(Map<String, String> map,HttpServletResponse response);
	
	/**
	 * 审核预签约记录（同意签约/拒绝签约）
	 * @param map
	 * @return
	 */
	public JSONObject checkYqyData(Map<String, String> map);
	
	/**
	 * 保存健康城市系统预签约信息数据
	 * @param map
	 * @return
	 */
	public JSONObject addYqyToJkcs(Map<String, String> map);

	/**
	 * 第三方家签基础数据查询
	 * @param map
	 * @return
	 */
	public JSONObject apiQyxxQuery(Map<String, String> map);

	/**
	 * 通过定时任务修改“签约类型”
	 * @param map
	 * @return
	 */
	public JSONObject updateQylxByTimedask(Map map);

	/**
	 * 第三方接口：使用身份证号查询签约服务包费用信息
	 * @param sfzh 身份证号
	 * @return
	 */
	public JSONObject getQyfyxxInfo(String sfzh);

	/**
	 * 分页查询电子协议
	 * @param map
	 * @return
	 */
	public JSONObject queryDzxyByage(Map<String,String> map);

	/**
	 * 根据协议ID查询协议
	 * @param XYID
	 * @return
	 */
	public JSONObject queryXyByXyid(String XYID);

	/**
	 * 健康城市App查询签约协议
	 * @param map
	 * @return
	 */
	public JSONObject queryQyxyToJkcs(Map<String,String> map);

	/**
	 * 根据医生ID查询该医生签约的患者总数
	 * @param map {USERID:xxx}
	 * @return
	 */
	public String queryQyzsToJkcs(Map<String,String> map);

	/**
	 * 健康城市App正式签约电子签名与状态更新
	 * @param map 更新参数
	 * @return
	 */
	public JSONObject zsQyxxUpdateForJkcs(Map<String,String> map);

	/**
	 * 查询医保服务项
	 * @return
	 */
	public JSONArray queryYbfwx(Map<String, String> map);

	/**
	 * 查询协议可选的所有服务包--V_XXWH_FWBXX
	 * @return
	 */
	public JSONArray queryFwbAllByView(Map<String, String> map);

	/**
	 * 查询患者已经签订的所有服务包ID
	 * 	--用于前台服务包禁用
	 * @return
	 */
	public JSONObject getYqdFwbid(Map<String, String> map);

	/**
	 * 保存协议模板到mongo，并且保存记录到表
	 * @param map
	 * @throws Exception
	 */
	public void addXyToMongoDbAndRecord(Map map, ResultObject ro) throws Exception;

}
